python 实现穷举组合 |
您所在的位置:网站首页 › python 数字组合 › python 实现穷举组合 |
最近进行一项统计需要穷举一个列表元素的所有组合,通过查询以及自己摸索,总结出了一下三种方法: 方法1: 通过循环迭代的方式返回结果 def PowerSetsRecursive(items): subsets = [] first_elt = items[0] #first element rest_list = items[1:] for partial_sebset in PowerSetsRecursive(rest_list): subsets.append(partial_sebset) next_subset = partial_sebset[:] +[first_elt] subsets.append(next_subset) return subsets方法2: 也是通过循环迭代的方式进行列举,不过代码更精炼 def PowerSetsRecursive2(items): result = [[]] for x in items: result.extend([subset + [x] for subset in result]) return result方法3: 通过位运算符的方式,值得好好研究一下 def PowerSetsBinary(items): N = len(items) for i in range(2**N): combo = [] for j in range(N): if(i >> j ) % 2 == 1: combo.append(items[j]) print(combo)方法4: 我对方法3研究的过程中受到启发,其实穷举组合其实就是二进制每一位0/1组合的过程,所以我自己写了一个更容易理解的 n=len(items) for i in range(2**n): aa=str(bin(i))[2:].rjust(4,'0') # 转化为2进制,并补全左侧位数 combo=[] for j in range(len(aa)): if aa[j]=='1': combo.append(items[j]) print(combo) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |